package model

import (
	"time"

	"gorm.io/gorm"
)

// Department 部门模型
// 用于管理公司的组织架构，记录部门的层级关系和基本信息
type Department struct {
	ID        uint           `gorm:"primarykey" json:"id"` // 部门记录ID，主键
	CreatedAt time.Time      `json:"created_at"`           // 记录创建时间
	UpdatedAt time.Time      `json:"updated_at"`           // 记录更新时间
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`       // 软删除时间

	Name        string `gorm:"size:50;not null;unique" json:"name"` // 部门名称，唯一标识，不允许重复
	Description string `gorm:"size:500" json:"description"`         // 部门描述，用于说明部门的职责和业务范围
	ManagerID   uint   `gorm:"index" json:"manager_id"`             // 部门负责人ID，关联到用户表的主管信息
	ParentID    uint   `gorm:"index" json:"parent_id"`              // 上级部门ID，用于构建部门的层级关系
	Level       int    `gorm:"not null;default:1" json:"level"`     // 部门层级，1表示一级部门，数字越大层级越深
	Status      int    `gorm:"not null;default:1" json:"status"`    // 部门状态：1-正常（正常运营），0-禁用（暂停运营或已撤销）

	Manager User        `gorm:"foreignKey:ManagerID" json:"manager"` // 关联部门负责人信息，建立与User模型的关联关系
	Parent  *Department `gorm:"foreignKey:ParentID" json:"parent"`   // 关联上级部门信息，用于构建部门树形结构
}
